package com.hyq.learn.api.util;

import com.hyq.learn.api.model.entity.Order;
import org.springframework.boot.context.properties.PropertyMapper;

import java.math.BigDecimal;

/**
 * @author heyuqin
 * @date 2024/12/23 19:16
 */
public class PropertyMapperUtil {

    public static void main(String[] args) {
        PropertyMapper propertyMapper = PropertyMapper.get();

        Order order = new Order();
        order.setId(1L);
        order.setAmount(new BigDecimal("1.50"));

        propertyMapper.from(order::getId) // 从一个方法中获取一个值，转化为一个Source对象，后续的所有操作都是针对这个Source进行操作
                .whenNonNull() // 判断条件，每一个Source去都会去添加一个Predicate函数化接口，
                .whenEqualTo(2L) // 通过函数化接口叠加的方式实现多重判断 @See Predicate<T> and
                .to(System.out::println); // 最后将对应的值，通过Predicate对应的过滤条件进行执行
        propertyMapper.from(order.getId()).whenNonNull().to(System.out::println);

        // 创建一个propertyMapper，给后续的每个值操作判断都带上默认的Predicate
        PropertyMapper propertyMapper1 = PropertyMapper.get().alwaysApplyingWhenNonNull();
    }

}
